//package com.tx.core.lombok;
//
//import javax.annotation.processing.AbstractProcessor;
//import javax.annotation.processing.RoundEnvironment;
//import javax.annotation.processing.SupportedAnnotationTypes;
//import javax.lang.model.element.Element;
//import javax.lang.model.element.TypeElement;
//import javax.tools.JavaFileObject;
//import java.io.IOException;
//import java.io.PrintWriter;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Set;
//
///**
// * <pre>
// * 功能简述: AutoDTOAnnotationProcessor
// * </pre>
// *
// * @author PengQingyang
// * 创建时间 [2024/4/7]
// */
//@SupportedAnnotationTypes("com.tx.core.lombok.AutoDTO")
//public class AutoDTOAnnotationProcessor extends AbstractProcessor {
//
//    @Override
//    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
//        System.out.println("---> AutoDTOAnnotationProcessor process...");
//
//        for (TypeElement annotation : annotations) {
//            //获取所有被该注解标记过的实例
//            Set<? extends Element> annotatedElements = roundEnv.getElementsAnnotatedWith(annotation);
//            List<String> names = new ArrayList<>();
//            for (Element annotatedElement : annotatedElements) {
//                System.out.println("--> " + annotatedElement.getSimpleName().toString());
//                names.add("\"" + annotatedElement.getSimpleName().toString() + "\"");
//            }
//            StringBuilder namesStr = new StringBuilder();
//            if (!names.isEmpty()) {
//                for (int i = 0; i < names.size(); i++) {
//                    if (i == 0) {
//                        namesStr = new StringBuilder(names.get(i));
//                    } else {
//                        namesStr.append(",").append(names.get(i));
//                    }
//                }
//            }
//            String packageName = "org.example";
//            String className = "AnnotationClassName";
//            try {
//                JavaFileObject builderFile = processingEnv.getFiler()
//                        .createSourceFile(packageName + "." + className);
//
//                try (PrintWriter out = new PrintWriter(builderFile.openWriter())) {
//                    out.print("package ");
//                    out.print(packageName);
//                    out.println(";");
//                    out.println();
//
//                    out.print("public class ");
//                    out.print(className);
//                    out.println(" {");
//                    out.println();
//
//                    out.println("    public AnnotationClassName() {}");
//                    out.println();
//
//                    out.println("    public static String[] outNames() {");
//
//                    out.println("        return new String[]{" + namesStr + "};");
//
//                    out.println("    }");
//
//                    out.println("}");
//                }catch (Exception e){
//                    System.out.println("----> errorrrrrrrr 2");
//                }
//            } catch (IOException e) {
//                System.out.println("----> errorrrrrrrr 1");
//                throw new RuntimeException(e);
//            }
//        }
//
//        // 返回false 表示 当前处理器处理了之后 其他的处理器也可以接着处理，返回true表示，我处理完了之后其他处理器不再处理
//        return false;
//    }
//}
